Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

1.1K
Views
¿Cómo restaurar un token caducado [AWS Cognito]?

Estoy usando AWS para mi sitio web. Después de 1 hora, el token caduca y el usuario prácticamente no puede hacer nada.

Por ahora estoy tratando de actualizar las credenciales de esta manera:

 function getTokens(session) { return { accessToken: session.getAccessToken().getJwtToken(), idToken: session.getIdToken().getJwtToken(), refreshToken: session.getRefreshToken().getToken() }; }; function getCognitoIdentityCredentials(tokens) { const loginInfo = {}; loginInfo[`cognito-idp.eu-central-1.amazonaws.com/eu-central-1_XXX`] = tokens.idToken; const params = { IdentityPoolId: AWSConfiguration.IdPoolId Logins: loginInfo }; return new AWS.CognitoIdentityCredentials(params); }; if(AWS.config.credentials.needsRefresh()) { clearInterval(messwerte_updaten); cognitoUser.refreshSession(cognitoUser.signInUserSession.refreshToken, (err, session) => { if (err) { console.log(err); } else { var tokens = getTokens(session); AWS.config.credentials = getCognitoIdentityCredentials(tokens); AWS.config.credentials.get(function (err) { if (err) { console.log(err); } else { callLambda(); } }); } }); }

la cuestión es que, después de 1 hora, el token de inicio de sesión se actualiza sin problemas, pero después de 2 horas ya no puedo actualizar el token de inicio de sesión.

También intenté usar AWS.config.credentials.get() , AWS.config.credentials.getCredentials() y AWS.config.credentials.refresh() que tampoco funciona.

Los mensajes de error que recibo son:

Faltan credenciales en la configuración

Token de inicio de sesión no válido. Ficha caducada: 1446742058 >= 1446727732

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Después de casi 2 semanas finalmente lo resolví.

Necesita el token de actualización para recibir un nuevo token de identificación. Una vez que se adquiere el token actualizado, actualice el objeto AWS.config.credentials con el nuevo token de identificación.

aquí hay un ejemplo de cómo configurar esto, ¡funciona sin problemas!

 refresh_token = session.getRefreshToken(); // you'll get session from calling cognitoUser.getSession() if (AWS.config.credentials.needsRefresh()) { cognitoUser.refreshSession(refresh_token, (err, session) => { if(err) { console.log(err); } else { AWS.config.credentials.params.Logins['cognito-idp.<YOUR-REGION>.amazonaws.com/<YOUR_USER_POOL_ID>'] = session.getIdToken().getJwtToken(); AWS.config.credentials.refresh((err)=> { if(err) { console.log(err); } else{ console.log("TOKEN SUCCESSFULLY UPDATED"); } }); } }); }
over 4 years ago · Santiago Trujillo Report

0

Por lo general, se resuelve interceptando solicitudes http con lógica adicional.

 function authenticationExpiryInterceptor() { // check if token expired, if yes refresh } function authenticationHeadersInterceptor() { // include headers, or no }}

luego con el uso de la capa HttpService

 return HttpService.get(url, params, opts) { return authenticationExpiryInterceptor(...) .then((...) => authenticationHeadersInterceptor(...)) .then((...) => makeRequest(...)) }

También podría resolverse por proxy http://2ality.com/2015/10/intercepting-method-calls.html

En relación con AWS:https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Credentials.html

Estás interesado en:

  • obtenerPromesa()
  • actualizarPromesa()
over 4 years ago · Santiago Trujillo Report

0

Así es como implementé esto:

Primero debe autorizar al usuario al servicio y otorgar permisos:

Solicitud de muestra:

Así es como implementé esto:

Primero debe autorizar al usuario al servicio y otorgar permisos:

Solicitud de muestra:

 POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token& Content-Type='application/x-www-form-urlencoded'& Authorization=Basic aSdxd892iujendek328uedj grant_type=authorization_code& client_id={your client_id} code=AUTHORIZATION_CODE& redirect_uri={your rediect uri}

Esto devolverá un Json algo como:

HTTP/1.1 200 OK Tipo de contenido: aplicación/json

 {"access_token":"eyJz9sdfsdfsdfsd", "refresh_token":"dn43ud8uj32nk2je","id_token":"dmcxd329ujdmkemkd349r", "token_type":"Bearer", "expires_in":3600}

Ahora necesita obtener un token de acceso según su alcance:

 POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token Content-Type='application/x-www-form-urlencoded'& Authorization=Basic aSdxd892iujendek328uedj grant_type=client_credentials& scope={resourceServerIdentifier1}/{scope1} {resourceServerIdentifier2}/{scope2}

Json sería:

HTTP/1.1 200 OK Tipo de contenido: aplicación/json

 {"access_token":"eyJz9sdfsdfsdfsd", "token_type":"Bearer", "expires_in":3600}

Ahora, este token de acceso solo es válido durante 3600 segundos, después de lo cual debe intercambiarlo para obtener un nuevo token de acceso. Para hacer esto,

Para obtener un nuevo token de acceso desde el token de actualización:

 POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token > Content-Type='application/x-www-form-urlencoded' Authorization=Basic aSdxd892iujendek328uedj grant_type=refresh_token& client_id={client_id} refresh_token=REFRESH_TOKEN

Respuesta:

HTTP/1.1 200 OK Tipo de contenido: aplicación/json

 {"access_token":"eyJz9sdfsdfsdfsd", "refresh_token":"dn43ud8uj32nk2je", "id_token":"dmcxd329ujdmkemkd349r","token_type":"Bearer", "expires_in":3600}

Obtienes la imagen correcta.

Si necesitas más detalles entra aquí .

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!